package Controleur;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;

import DAO.DAOStation;
import DAO.DAOStationnement;
import DAO.DAOVelo;
import Modele.Station;
import Modele.Stationnement;
import Modele.Velo;
import Vue.AjoutStation;
import Vue.Map;

/**
 * Définit l'écouteur de validation d'ajout d'une station
 */
public class AjoutStationBtnListener implements ActionListener {

	/** La vue de l'ajout d'une station */
	private AjoutStation ajStation;
	/** La map */
	private Map map;

	/**
	 * Instancie l'écouteur
	 * 
	 * @param p_ajStation
	 *            La vue de l'ajout d'une station
	 * @param map
	 *            La map
	 */
	public AjoutStationBtnListener(AjoutStation p_ajStation, Map map) {
		this.ajStation = p_ajStation;
		this.map = map;
	}

	/**
	 * Action à faire lors de l'évenement
	 * 
	 * @param arg0
	 *            L'objet de l'évenement
	 */
	@Override
	public void actionPerformed(ActionEvent arg0) {

		Station s = new Station(ajStation.getField_NomStation().getText(),
				Integer.valueOf(ajStation.getField_NbMaxVelo().getText()),
				Double.valueOf(ajStation.getField_X().getText()
						.replace(',', '.')), Double.valueOf(ajStation
						.getField_Y().getText().replace(',', '.')), true);
		DAOStation.insertStation(s);

		ArrayList<Station> stations = DAOStation.getAllStation();
		Station lastStation = stations.get(stations.size() - 1);

		Velo velo;
		Stationnement stat;
		// On remplit la station à moitié de nouveaux vélos
		for (int i = 0; i < lastStation.getNbMaxVelo() / 2; i++) {
			// Insertion du vélo
			velo = new Velo(true, new java.util.Date(), true);
			DAOVelo.insertVelo(velo);
			velo = DAOVelo.getAllVelo().get(DAOVelo.getAllVelo().size() - 1);

			// Stationnement du vélo dans la station
			stat = new Stationnement(velo.getIdVelo(),
					lastStation.getIdStation(), new java.util.Date(),
					(java.util.Date) null);
			DAOStationnement.insertStationnement(stat);
		}

		map.refreshStations();
		ajStation.close();
	}

}